home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / ODF / OS / FWGraphx / Sources / SLGDev.cpp < prev    next >
Encoding:
Text File  |  1996-04-25  |  5.5 KB  |  186 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                SLGDev.cpp
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWOS.hpp"
  11.  
  12. #ifndef SLGDEV_H
  13. #include "SLGDev.h"
  14. #endif
  15.  
  16. #ifndef PRGDEV_H
  17. #include "PRGDev.h"
  18. #endif
  19.  
  20. //========================================================================================
  21. // Graphics device
  22. //========================================================================================
  23.  
  24. #ifdef FW_BUILD_MAC
  25. #pragma segment FWGraphics_GDevice
  26. #endif
  27.  
  28. //----------------------------------------------------------------------------------------
  29. //    FW_PrivGDev_CreateFromODCanvas
  30. //----------------------------------------------------------------------------------------
  31.  
  32. FW_HGDevice SL_API FW_PrivGDev_CreateFromODCanvas(Environment *ev, ODCanvas* odCanvas)
  33. {
  34.     FW_HGDevice device = 0;
  35.     FW_SOM_TRY
  36.     {
  37.         device = FW_NEW(FW_CPrivGraphicsDevice, (ev, odCanvas));
  38.         device->Acquire();
  39.     }
  40.     FW_SOM_CATCH
  41.     return device;
  42. }
  43.  
  44. //----------------------------------------------------------------------------------------
  45. //    FW_PrivGDev_CreateFromPlatformCanvas
  46. //----------------------------------------------------------------------------------------
  47.  
  48. FW_HGDevice SL_API FW_PrivGDev_CreateFromPlatformCanvas(Environment *ev, ODPlatformCanvas platformCanvas)
  49. {
  50.     FW_HGDevice device = 0;
  51.     FW_SOM_TRY
  52.     {
  53.         device = FW_NEW(FW_CPrivGraphicsDevice, (ev, platformCanvas));
  54.         device->Acquire();
  55.     }
  56.     FW_SOM_CATCH
  57.     return device;
  58. }
  59.  
  60. //----------------------------------------------------------------------------------------
  61. //    FW_PrivGDev_Acquire
  62. //----------------------------------------------------------------------------------------
  63.  
  64. void SL_API FW_PrivGDev_Acquire(FW_HGDevice gdev)
  65. {
  66.     // No try block necessary - Do not throw
  67.     gdev->Acquire();
  68. }
  69.  
  70. //----------------------------------------------------------------------------------------
  71. //    FW_PrivGDev_Release
  72. //----------------------------------------------------------------------------------------
  73.  
  74. void SL_API FW_PrivGDev_Release(FW_HGDevice gdev)
  75. {
  76.     // No try block necessary - Do not throw
  77.     gdev->Release();
  78. }
  79.  
  80. //----------------------------------------------------------------------------------------
  81. //    FW_PrivGDev_GetPlatformCanvas
  82. //----------------------------------------------------------------------------------------
  83.  
  84. ODPlatformCanvas SL_API FW_PrivGDev_GetPlatformCanvas(FW_HGDevice gdev)
  85. {
  86.     // No try block necessary - Do not throw
  87.     return gdev->GetPlatformCanvas();
  88. }
  89.  
  90. //----------------------------------------------------------------------------------------
  91. //    FW_PrivGDev_GetFontMetrics
  92. //----------------------------------------------------------------------------------------
  93.  
  94. FW_PlatformError SL_API FW_PrivGDev_GetFontMetrics(FW_HGDevice gdev, FW_HFont font, FW_PlatformFontMetrics& metrics)
  95. {
  96.     FW_RETURN_ERR_TRY
  97.     {
  98.         gdev->SelectFont(font, FALSE);    // FALSE means no scaling
  99.     
  100. #ifdef FW_BUILD_MAC
  101. FW_UNUSED(gdev);
  102.         ::GetFontInfo(&metrics);
  103. #endif
  104.     
  105. #ifdef FW_BUILD_WIN
  106.         HDC dc = gdev->GetPlatformCanvas();
  107.         ::SetMapMode(dc, MM_ANISOTROPIC);
  108.         
  109.         SIZE sizeOldWinExt;
  110.         ::SetWindowExtEx(dc, 1440, 1440, &sizeOldWinExt);
  111.         
  112.         SIZE sizeOldViewExt;
  113.         ::SetViewportExtEx(dc, ::GetDeviceCaps(dc, LOGPIXELSX), ::GetDeviceCaps(dc, LOGPIXELSY), &sizeOldViewExt);
  114.         
  115.         ::GetTextMetrics(dc, &metrics);
  116.         
  117.         ::SetMapMode(dc, MM_TEXT);
  118.         ::SetWindowExtEx(dc, sizeOldWinExt.cx, sizeOldWinExt.cx, NULL);
  119.         ::SetViewportExtEx(dc, sizeOldViewExt.cx, sizeOldViewExt.cy, NULL);
  120. #endif
  121.     }
  122.     FW_RETURN_ERR_CATCH
  123. }
  124.  
  125. //----------------------------------------------------------------------------------------
  126. //    FW_PrivGDev_GetResolution
  127. //----------------------------------------------------------------------------------------
  128.  
  129. FW_PlatformError SL_API FW_PrivGDev_GetResolution(FW_HGDevice gdev, FW_SPoint& pt)
  130. {
  131.     // No try block necessary - Do not throw
  132.     pt = gdev->GetResolution();
  133.     return FW_xNoError;
  134. }
  135.  
  136. //----------------------------------------------------------------------------------------
  137. //    FW_PrivGDev_Suspend
  138. //----------------------------------------------------------------------------------------
  139.  
  140. FW_SPrivSuspendResumeState*    SL_API FW_PrivGDev_Suspend(FW_HGDevice gdev, FW_PlatformError* error)
  141. {
  142.     FW_ERR_TRY
  143.     {
  144.         return gdev->Suspend();
  145.     }
  146.     FW_ERR_CATCH
  147.     return NULL;
  148. }
  149.  
  150. //----------------------------------------------------------------------------------------
  151. //    FW_PrivGDev_Resume
  152. //----------------------------------------------------------------------------------------
  153.  
  154. void SL_API FW_PrivGDev_Resume(FW_HGDevice gdev, FW_SPrivSuspendResumeState *suspendResumeState, FW_PlatformError* error)
  155. {
  156.     FW_ERR_TRY
  157.     {
  158.         gdev->Resume(suspendResumeState);
  159.     }
  160.     FW_ERR_CATCH
  161. }
  162.  
  163. //----------------------------------------------------------------------------------------
  164. //    FW_PrivGDev_SetResolution
  165. //----------------------------------------------------------------------------------------
  166.  
  167. FW_PlatformError SL_API FW_PrivGDev_SetResolution(FW_HGDevice gdev, FW_Fixed x, FW_Fixed y)
  168. {
  169.     // No try block necessary - Do not throw
  170.     gdev->SetResolution(x, y);
  171.     return FW_xNoError;
  172. }
  173.  
  174. //----------------------------------------------------------------------------------------
  175. //    FW_PrivGDev_CanvasChanged
  176. //----------------------------------------------------------------------------------------
  177.  
  178. void SL_API FW_PrivGDev_CanvasChanged(FW_HGDevice gdev, Environment *ev, ODCanvas* canvas)
  179. {
  180.     FW_SOM_TRY
  181.     {
  182.         gdev->CanvasChanged(ev, canvas);
  183.     }
  184.     FW_SOM_CATCH
  185. }
  186.